有函數有太多的參數時,可以將這些參數包裝成parameter object.
假設有個出版商類別, 有個函數是出版書籍, 需要以下的參數:
public class Publisher
{
    public Book Publish(string bookName, string authorName, int pageNumber, DateTime publishDate, string ISBN)
    {
        // ...
    }
}
試想未來要多更多參數時, 這個Publish函數的宣告會越來越大, 到時維護會很難懂.
因此, 將這些參數包裝成一個新record: PublishRequest
public record PublishRequest
{
    public string bookName { get; set; } 
    public string authorName { get; set; } 
    public int pageNumber { get; set; }
    public DateTime publishDate { get; set; }
    public string ISBN { get; set; }
}
public class Publisher
{
    public Book Publish(PublishRequest request)
    {
        // ...
    }
}
經過這種重構, 未來參數異動時, 先從PublishRequest修改, 再修改Publisher的Publish流程.
可讀性高, 可以從參數的類別名知道意思.
其實我們在開發ASP.NET, 很常用parameter object處理網頁的輸入/輸出.
以知名的eCommerce專案nopCommerce,
它的一項BlogController, 有很多public函數, 其中這函數public virtual async Task<IActionResult> List(BlogPagingFilteringModel command)
引用的BlogPagingFilteringModel如下, 所需要的參數都在此.
public partial record BlogPagingFilteringModel : BasePageableModel
{
    #region Methods
    public virtual DateTime? GetParsedMonth()
    {
        //...
    }
    public virtual DateTime? GetFromMonth()
    {
         //...
    }
    public virtual DateTime? GetToMonth()
    {
         //...
    }
    #endregion
    #region Properties
    public string Month { get; set; }
    public string Tag { get; set; }
    #endregion
}